﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WService.WBiblia
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "WBiblia" in code, svc and config file together.
    public class WBiblia : IWBiblia
    {
        public void DoWork()
        {
            throw new NotImplementedException();
        }

        DB_WBIBLIA dbWbiblia = new DB_WBIBLIA();

        public void FecharConexao(object banco)
        {
            ((DB_WBIBLIA)banco).Connection.Close();
        }

        public void InicializarConexao(object banco)
        {
            ((DB_WBIBLIA)banco).Connection.Open();
        }

        public List<TB_UF> ListaUF()
        {
            var listUf = new List<TB_UF>();

            try
            {
                InicializarConexao(dbWbiblia);
                listUf = dbWbiblia.TB_UF.OrderBy(q => q.NO_SIGLA).ToList();
            }
            catch (Exception e)
            {
                //metAudit.IncluirLogErro(e.Message, "csCliente.cs", "Incluir");
            }
            finally
            {
                FecharConexao(dbWbiblia);
            }

            return listUf;
        }

        public List<TB_CIDADE> ListaCidade(int intCodUf)
        {
            var listCidade = new List<TB_CIDADE>();

            try
            {
                InicializarConexao(dbWbiblia);
                listCidade = dbWbiblia.TB_CIDADE.Where(q => q.CO_UF == intCodUf).OrderBy(q => q.NO_CIDADE).ToList();
            }
            catch (Exception e)
            {
                //metAudit.IncluirLogErro(e.Message, "csCliente.cs", "Incluir");
            }
            finally
            {
                FecharConexao(dbWbiblia);
            }

            return listCidade;
        }

        public TB_USUARIO IncluirUsuario(string strUsuario, string strSobrenome, string strEmail, string strSenha, int intCodSexo, DateTime dtNascimento, int intCodUf, int intCodCidade)
        {
            var objUsuuario = new TB_USUARIO();

            try
            {
                InicializarConexao(dbWbiblia);
                objUsuuario.NO_USUARIO = strUsuario;
                objUsuuario.NO_SOBRENOME = strSobrenome;
                objUsuuario.NO_EMAIL = strEmail;
                objUsuuario.NO_SENHA = strSenha;
                objUsuuario.CO_SEXO = intCodSexo;
                objUsuuario.DT_NASCIMENTO = dtNascimento;
                objUsuuario.CO_UF = intCodUf;
                objUsuuario.CO_CIDADE = intCodCidade;
                dbWbiblia.AddToTB_USUARIO(objUsuuario);
                dbWbiblia.SaveChanges();
            }
            catch (Exception e)
            {
                //metAudit.IncluirLogErro(e.Message, "csCliente.cs", "Incluir");
            }
            finally
            {
                FecharConexao(dbWbiblia);
            }

            return objUsuuario;
        }

        public TB_USUARIO AutorizarUsuario(string strEmail, string strSenha)
        {
            var objUsuuario = new TB_USUARIO();
            try
            {
                InicializarConexao(dbWbiblia);
                objUsuuario = dbWbiblia.TB_USUARIO.Where(q => q.NO_EMAIL == strEmail && q.NO_SENHA == strSenha).FirstOrDefault();
            }
            catch (Exception e)
            {
                //metAudit.IncluirLogErro(e.Message, "csCliente.cs", "Incluir");
            }
            finally
            {
                FecharConexao(dbWbiblia);
            }
            return objUsuuario;
        }

        public TB_USUARIO ConsultarEmail(string strEmail)
        {
            var objUsuuario = new TB_USUARIO();
            try
            {
                InicializarConexao(dbWbiblia);
                objUsuuario = dbWbiblia.TB_USUARIO.Where(q => q.NO_EMAIL == strEmail).FirstOrDefault();
            }
            catch (Exception e)
            {
                //metAudit.IncluirLogErro(e.Message, "csCliente.cs", "Incluir");
            }
            finally
            {
                FecharConexao(dbWbiblia);
            }
            return objUsuuario;
        }

    }
}
